package com.chris.code.generate.android;

import com.chris.assist.builders.android.mvpp.supports.AndroidMvppBuildManager;
import com.chris.assist.config.Config;
import com.chris.assist.models.LayoutInfo;
import com.chris.code.generate.manager.LocalTestConfigBuilder;

/**
 * @author Chris Chan
 * Create On 2025/9/26 下午2:50
 * Use for: Android界面UI持有者资源创建示例
 * Explain:
 */
public class AndroidMvppViewHoldersBuildTest {
    public static void main(String[] args) {
        // 1. 获取配置
        Config config = LocalTestConfigBuilder.create().get();
        // 2. 创建
        buildMvppViewHoldersWithListItemUI(config);
    }

    /**
     * 创建UI持有者资源
     * 配置方法： ViewHolders create(String mainUI, String pageName, String subPagePath)
     * 参数说明
     * mainUI      页面主界面布局文件名，不含后缀
     * pageName    页面名称
     * subPagePath 页面相对于{module.package.name}.pages的子包路径
     *
     * @param config 配置
     */
    private static void buildMvppViewHolders(Config config) {
        // 1. 创建管理器
        AndroidMvppBuildManager manager = AndroidMvppBuildManager.get(config);
        // 2. 创建页面UI持有者
        manager.createViewHolders("common/act", "Build1Test", "act_build1test");
        manager.createListViewHolders("common/act",
                "Build2Test",
                "act_build2test",
                () -> LayoutInfo.list
                        .add("item_data", "DataItem")
                        .get());
    }

    /**
     * 创建仅包含主界面布局的UI持有者资源
     *
     * @param config
     */
    private static void buildMvppViewHoldersWithOnlyMainUI(Config config) {
        // 1. 创建管理器
        AndroidMvppBuildManager manager = AndroidMvppBuildManager.get(config);
        // 2. 创建页面UI持有者
        manager.createViewHolders("common/act", "Build1Test", "act_build1test");
    }

    /**
     * 创建包含列表项布局的UI持有者资源
     *
     * @param config
     */
    private static void buildMvppViewHoldersWithListItemUI(Config config) {
        // 1. 创建管理器
        AndroidMvppBuildManager manager = AndroidMvppBuildManager.get(config);
        // 2. 创建页面UI持有者
        manager.createListViewHolders("common/act",
                "RecyclerView2Test",
                "act_recyclerview2test",
                () -> LayoutInfo.list
                        .add("item_data", "DataItem")
                        .get());
    }
}
